package facade;

import entity.Capitulo;
import entity.Categoria;
import entity.ContenidoCapitulo;
import entity.Curso;
import entity.DatoUsuario;
import entity.Empresa;
import entity.TipoUsuario;
import entity.Unidad;
import entity.Usuario;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ejb.LocalBean;

/**
 *
 * @author Rodrigo
 */
@Stateless
@LocalBean
public class EpraxisHome {

    @EJB
    private UsuarioFacade usuarioFacade;
    @EJB
    private CursoFacade cursoFacade;
    @EJB
    private CategoriaFacade categoriaFacade;
    @EJB
    private UnidadFacade unidadFacade;
    @EJB
    private CapituloFacade capituloFacade;
    @EJB
    private ContenidoCapituloFacade contenidoCapituloFacade;
    @EJB
    private TipoUsuarioFacade tipoUsuarioFacade;
    @EJB
    private DatoUsuarioFacade datoUsuarioFacade;

    public List<Usuario> getListaUsuario() {
        return usuarioFacade.findAll();
    }

    public List<Curso> getListaCursoUltimosPublicados() {
        return cursoFacade.getListaCursoUltimosPublicados();
    }

    public List<Categoria> getListaCategoria() {
        return categoriaFacade.getListaCategoria();
    }

    public Categoria getCategoriaByID(Integer id) {
        return categoriaFacade.find(id);
    }

    public void createCurso(Curso curso) {
        cursoFacade.create(curso);
    }

    public void editCurso(Curso curso) {
        cursoFacade.edit(curso);
    }

    public void removeCurso(Curso curso) {
        cursoFacade.remove(curso);
    }

    public Usuario getUsuarioByNombreUsuario(String nombreUsuario) {
        return usuarioFacade.getUsuarioByNombreUsuario(nombreUsuario);
    }

    public Usuario iniciarSesion(String nombreUsuario, String clave) {
        return usuarioFacade.inicarSesion(nombreUsuario, clave);
    }

    public Curso getCursoUltimoCreado() {
        return cursoFacade.getCursoUltimoCreado();
    }

    public Curso getCursoByID(Integer id) {
        return cursoFacade.find(id);
    }

    public int getOrdenSiguienteUnidad(Curso curso) {
        return unidadFacade.getOrdenSiguienteUnidad(curso);
    }

    public void createUnidad(Unidad unidad) {
        unidadFacade.create(unidad);
    }

    public List<Unidad> getListaUnidadByCurso(Curso curso) {
        return unidadFacade.getListaUnidadByCurso(curso);
    }

    public List<Capitulo> getListaCapituloByUnidad(Unidad unidad) {
        return capituloFacade.getListaCapituloByUnidad(unidad);
    }

    public Unidad getUnidadByID(Integer id) {
        return unidadFacade.find(id);
    }

    public void createCapitulo(Capitulo capitulo) {
        capituloFacade.create(capitulo);
    }

    public void removeUnidad(Unidad unidad) {
        unidadFacade.remove(unidad);
    }

    public Capitulo getCapituloByID(Integer id) {
        return capituloFacade.find(id);
    }

    public void removeCapitulo(Capitulo capitulo) {
        capituloFacade.remove(capitulo);
    }

    public void editCapitulo(Capitulo capitulo) {
        capituloFacade.edit(capitulo);
    }

    public ContenidoCapitulo getContenidoCapituloByCapitulo(Capitulo capitulo) {
        return contenidoCapituloFacade.getContenidoCapituloByCapitulo(capitulo);
    }

    public void createContenidoCapitulo(ContenidoCapitulo contenidoCapitulo) {
        contenidoCapituloFacade.create(contenidoCapitulo);
    }

    public void editContenidoCapitulo(ContenidoCapitulo contenidoCapitulo) {
        contenidoCapituloFacade.edit(contenidoCapitulo);
    }

    public List<Usuario> getListaUsuarioByEmpresa(Empresa empresa) {
        return usuarioFacade.getListaUsuarioByEmpresa(empresa);
    }

    public Long getCountCursosAsignadosUsuario(Usuario usuario) {
        return usuarioFacade.getCountCursosAsignadosUsuario(usuario);
    }

    public List<Curso> getListaCursoByEmpresa(Empresa empresa) {
        return cursoFacade.getListaCursoByEmpresa(empresa);
    }

    public Usuario getUsuarioByID(Integer id) {
        return usuarioFacade.getUsuarioByID(id);
    }

    public TipoUsuario getTipoUsuarioByID(Integer id) {
        return tipoUsuarioFacade.find(id);
    }

    public void createUsuario(Usuario usuario) {
        usuarioFacade.create(usuario);
    }

    public void createDatoUsuario(DatoUsuario datoUsuario) {
        datoUsuarioFacade.create(datoUsuario);
    }

    public void editUsuario(Usuario usuario) {
        usuarioFacade.edit(usuario);
    }

    public void editDatoUsuario(DatoUsuario datoUsuario) {
        datoUsuarioFacade.edit(datoUsuario);
    }

    public int removeCursosAsignadosUsuario(Usuario usuario) {
        return usuarioFacade.deleteCursosAsignadosUsuario(usuario);
    }

    public int removeTipoUsuarioFromUsuario(Usuario usuario) {
        return tipoUsuarioFacade.removeTipoUsuarioFromUsuario(usuario);
    }

    public void createTipoUsuarioForUsuario(TipoUsuario tipoUsuario, Usuario usuarioEditar) {
        usuarioFacade.createTipoUsuarioForUsuario(tipoUsuario, usuarioEditar);
    }

    public List<Curso> getListaCursosAsignadosByUsuario(Usuario usuario) {
        return cursoFacade.getListaCursosAsignadosByUsuario(usuario);
    }

    public DatoUsuario getDatoUsuarioByUsuario(Usuario usuario) {
        return datoUsuarioFacade.getDatoUsuarioByUsuario(usuario);
    }

}
